import Home from "./view/home";
import Error404 from "./view/error/404";
import { JSXElement } from "solid-js";

const routesMap = import.meta.glob(
  [
    "./view/**/*.tsx",
    "!./view/error/**",
    "!./view/home/index.tsx",
    "!./view/**/components",
  ],
  {
    eager: true,
  }
);

const map: { path: string; component: JSXElement }[] = Object.entries(
  routesMap
).map((item: any) => {
  let path = item[0].match(/.\/view([a-z|\/|\d]+)/i)[1];
  if (item[0].includes("index.tsx")) path = path.replace(/\/index/i, "");
  return {
    path,
    component: item[1].default,
  };
});

console.log("map", map);

/**
 * 基于文件的路由, 首先本路由站不支持任何动态路由传值请使用 ?id=xx&...... 形式
 * 文件路径既是路由路径, 例如:
 * ./view/home/test.tsx => /home/test
 * ./view/test/index.tsx => /test
 * ./view/test/index/test.tsx => /test/index/test
 * ./view/test/test.tsx => /test/test
 * !!! 其中 home/index(首页) 不自动导入, home 中除 index 都自动导入
 * !!! 其中 error/** 下的所有文件不自动导入, 需要手动导入对应错误代码页面的路由
 * !!! 其中不导入所有子页面的 components 文件夹下的所有内容
 */
const routes = [
  {
    path: "/",
    component: Home,
  },
  {
    path: "**",
    component: Error404,
  },
  ...map,
];

export default routes;
